package Testes;

import static org.junit.Assert.*;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.junit.Test;

import DAO.AlunoDaoImplArquivo;
import Pojo.Aluno;
import Pojo.Historico;
import Pojo.HistoricoTurma;
import Pojo.Nota;
import Pojo.Turma;
import Pojo.Professor;

public class AlunoDaoImplArquivoTest {
	
	public void insercaoNaListaDaCerto() throws Exception{
		Aluno aluno = new Aluno(4,"Thiago de Sousa Silveira","09989403643");
		assertEquals(true, new AlunoDaoImplArquivo().adicionarAluno(aluno));
	}
	
	public void insercaoNaListaDuplicadoDaErrado() throws Exception{
		Aluno aluno = new Aluno(1,"Thiago de Sousa Silveira","09989403643");
		AlunoDaoImplArquivo alunoDao = new AlunoDaoImplArquivo();
		alunoDao.adicionarAluno(aluno);
		assertEquals(false, alunoDao.adicionarAluno(aluno));
	}

	public void insercaoNaListaMesmoIdDaErrado() throws Exception{
		Aluno aluno = new Aluno(1,"Thiago de Sousa Silveira","09989403643");
		AlunoDaoImplArquivo alunoDao = new AlunoDaoImplArquivo();
		alunoDao.adicionarAluno(aluno);
		aluno = new Aluno(1,"Maione José","12555935841");
		assertEquals(false, alunoDao.adicionarAluno(aluno));
	}

	public void remocaoNaListaDaCerto() throws Exception{
		AlunoDaoImplArquivo alunoDao = new AlunoDaoImplArquivo();
		Aluno aluno = new Aluno(2,"Maionne","12555935841");
		assertEquals(true,alunoDao.removerAluno(aluno));
	}
		
	public void remocaoDeAlunoQueNaoExisteDaErrado() throws Exception{
		Aluno aluno = new Aluno(1,"Thiago de Sousa Silveira","09989403643");
		AlunoDaoImplArquivo alunoDao = new AlunoDaoImplArquivo();
		alunoDao.adicionarAluno(aluno);
		aluno = new Aluno(2,"Maione José","12555935841");
		alunoDao.adicionarAluno(aluno);
		aluno = new Aluno(3,"Teste","12555935841");
		assertEquals(false,alunoDao.removerAluno(aluno));
	}
	
	@Test
	public void procurarAlunoPorNomeNaListaDaCerto() throws Exception{
		AlunoDaoImplArquivo alunoDao = new AlunoDaoImplArquivo();
		List<Aluno> lista = alunoDao.procurarPorNome("Maione");
		assertNotSame(0, lista.size());
	}
	
	@Test
	public void procurarAlunoPorNomeNaListaDaErrado() throws Exception{
		AlunoDaoImplArquivo alunoDao = new AlunoDaoImplArquivo();
		Aluno aluno2 = new Aluno(2,"Maione José","12555935841");
		List<Aluno> lista = alunoDao.procurarPorNome("Joseph");
		assertEquals(0, lista.size());
	}
	
	@Test
	public void procurarAlunoPorCpfNaListaDaCerto() throws Exception{
		AlunoDaoImplArquivo alunoDao = new AlunoDaoImplArquivo();
		Aluno aluno = alunoDao.procurarPorCpf("09989403643");
		assertNotSame(null, aluno);
	}
	
	@Test
	public void procurarAlunoPorCpfNaListaDaErrado() throws Exception{
		AlunoDaoImplArquivo alunoDao = new AlunoDaoImplArquivo();
		Aluno aluno = alunoDao.procurarPorCpf("19923922033");
		assertEquals(null, aluno);
	}
	
	@Test
	public void procurarAlunoPorIdNaListaDaCerto() throws Exception{
		AlunoDaoImplArquivo alunoDao = new AlunoDaoImplArquivo();
		Aluno aluno = alunoDao.procurarPorId(1);
		assertNotSame(null, aluno);
	}
	
	@Test
	public void procurarAlunoPorIdNaListaDaErrado() throws Exception{
		AlunoDaoImplArquivo alunoDao = new AlunoDaoImplArquivo();
		Aluno aluno = alunoDao.procurarPorId(-1);
		assertEquals(null, aluno);
	}
	
}
